package com.anlogic.sdk.bsp.settings;

import java.util.Map;

import com.anlogic.sdk.bsp.model.IPlatformProject;
import com.anlogic.sdk.tools.model.DocInfo;
import com.anlogic.sdk.tools.model.DriverInfo;
import com.anlogic.sdk.tools.model.LibraryInfo;
import com.anlogic.sdk.tools.model.OSInfo;

public interface IBspSettingTool {
	
	IPlatformProject getPlatform();
	
	void restore();
	void restoreMss();
	
	OSInfo getBspOsInfo();
	Map<String, DocInfo> getBspDocInfo();
	Map<String, DriverInfo> getBspDriverInfo();
	Map<String, LibraryInfo> getBspLibInfo();
	
	Map<String, Map<String, OSInfo>> getOsInfo();
	Map<String, Map<String, DriverInfo>> getDriverInfo();
	Map<String, Map<String, LibraryInfo>> getLibInfo();
	
	String getChipFromHpf(String hpf);
	
	String[] getOsVersions(String osName);
	
	String[] getDriverAppNames(String driverName, String os, String chip, String proc);
	
	String[] getLibraryNames();
	
	String[] getLibraryVersions(String libName);
	
	String[] getLibDescs(String libName);
	
	Map<String, IProperty> getProperties(String component, String compType);
	
	void setOsVersion(String ver);
	
	void addLibrary(String lib, String ver);
	
	void setLibVersion(String lib, String ver);
	
	void removeLibrary(String lib);
	
	void addDriver(String driver, String ver);
	
	void setDriverVersion(String driver, String ver);
	
	void removeDriver(String driver);
	
	boolean isConfigurable(String component);
	
	void addProperty(String component, String comptype, Map<String, IProperty> props);
	
	void setProperty(String component, String comptype, Map<String, IProperty> props);
	
	void removeProperty(String name, String comptype);
	
	void updateBspHpf(String bspLocation, String hpf);
	
	void updateAppLinkscript(String bspLocation, String appLocation);
	
	void updateMss();
	
	void updateBspSource();
	
	void updateProperties();
	void regenerateBsp();
}
